package com.unidt.www.module.bpm.service.task;

import com.unidt.www.module.bpm.dto.ActReActBtnConfigDto;
import com.unidt.www.module.bpm.dto.ActReActTimeConfigDto;
import com.unidt.www.module.bpm.vo.ActReActBtnConfigVo;
import com.unidt.www.module.bpm.vo.ActReActDeadTimeConfigVo;

import java.util.List;

/**
 * @Author sk
 * @Description:
 * @Date 2023/2/7 17:03
 **/
public interface ActReActConfigService {

    /**
     * 功能描述: 获取流程定义
     *
     * @param modelId
     * @return com.unidt.www.module.bpm.dal.dataobject.definition.ActReActConfigDo
     * @author sk
     * @date 2023/2/7
     */
    ActReActBtnConfigVo getBaseBtnConfig(String modelId, String actId);

    /**
     * 功能描述: 保存配置
     * @author sk
     * @date 2023/2/7
     * @param reActBtnConfigDto
     * @return void
     */
    void saveBtnConfig(ActReActBtnConfigDto reActBtnConfigDto);


    /**
     * 功能描述: 更新配置
     *
     * @return void
     * @author sk
     * @date 2023/2/7
     */

    void renewConfig(String modelId, String processDefinitionId);

    /**
     * 功能描述: 节点任务时长获取
     * @author sk
     * @date 2023/2/8
     * @param modelId
     * @param actId
     * @return com.unidt.www.module.bpm.vo.ActReActDeadTimeConfigVo
     */

    ActReActDeadTimeConfigVo getBaseTimeConfig(String modelId, String actId);

    /**
     * 功能描述: 保存时间设置
     * @author sk
     * @date 2023/2/8
     * @param actReActTimeConfigDto
     * @return void
     */
    void saveTimeConfig(ActReActTimeConfigDto actReActTimeConfigDto);

    /**
     * 功能描述: 批量保存按钮配置
     * @author sk
     * @date 2023/2/8
     * @param actReActBtnConfigDtos
     * @return void
     */

    Boolean saveBatchBtnConfig(List<ActReActBtnConfigDto> actReActBtnConfigDtos);


    /**
     * 功能描述:批量保存 节点时间设置
     * @author sk
     * @date 2023/2/8
     * @param actReActTimeConfigDtoList
     * @return java.lang.Boolean
     */
    Boolean saveBatchTimeConfig(List<ActReActTimeConfigDto> actReActTimeConfigDtoList);

    /**
     * 功能描述: 获取流程定义节点配置
     * @author sk
     * @date 2023/2/9
     * @param processDefinitionId
     * @param actId
     * @return com.unidt.www.module.bpm.vo.ActReActBtnConfigVo
     */

    ActReActBtnConfigVo getProcessConfig(String processDefinitionId, String actId);

    /**
     * 功能描述:
     * @author sk
     * @date 2023/2/9
     * @param processDefinitionId
     * @param actId
     * @return com.unidt.www.module.bpm.vo.ActReActDeadTimeConfigVo
     */
    ActReActDeadTimeConfigVo getProcessTimeConfig(String processDefinitionId, String actId);

    /**
     * 功能描述:获取流程实例节点 按钮配置
     * @author sk
     * @date 2023/2/13
     * @param taskId
     * @return com.unidt.www.module.bpm.vo.ActReActBtnConfigVo
     */

    ActReActBtnConfigVo getTaskProcessConfig(String taskId);
}
